"""
sortBy算子：对RDD数据进行排序，基于指定的排序依据
语法：
rdd.sortBy(func,ascending = True, numPartitions = 1)
    func:(T) -> U : 按照rdd的哪个数据进行排序，如lambda x :x[1] 表示按照rdd中的第二列元素排序
        ascending ： True升序   False降序
    numPartitions ： 用多少分区排序（=1，为单个分区，全局有序）
"""

from pyspark import SparkConf, SparkContext
import os
os.environ['PYSPARK_PYTHON'] = "C:/Users/Lenovo/AppData/Local/Programs/Python/Python310/python.exe"

conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf = conf)

rdd = sc.textFile("E:/excel学习文档-表格/word.txt")
# print(rdd.collect())
rdd1 = rdd.flatMap(lambda x : x.split(" "))

word_t = rdd1.map(lambda x:(x,1))
# print(word_t.collect())

# 分组并求和
word_rdd = word_t.reduceByKey(lambda x, y: x + y)
# print(word_rdd.collect())

# 对结果排序
word_sort = word_rdd.sortBy(lambda x : x[1],ascending = False,numPartitions = 1)
print(word_sort.collect())